/** 移除元素https://leetcode-cn.com/problems/remove-element/
 * 给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
 * 不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
 * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
 */
package com.chen.Leet;

import java.util.Arrays;

public class Solution {
	/**
	 * 
	 * @param nums 数组 nums
	 * @param val 一个值 val
	 * @return 移除所有数值等于 val 的元素后，新数组的新长度
	 */
	public static int removeElement(int[] nums, int val) {
		int i = 0;
		if (nums.length == 0 || nums == null)
			return i;
		if (nums.length != 0) {
			for (int j = 0; j < nums.length; j++) {
				if (nums[j] != val) {
					nums[i++] = nums[j];
				}
			}
		}
		return i;

	}

	public static void main(String[] args) {
		int nums[] = { 0, 1, 2, 2, 3, 0, 4, 2 };
		int result = removeElement(nums, 2);
		System.out.println(result);
		for (int k = 0; k < nums.length; k++) {
			System.out.print(nums[k]);
		}
		System.out.println("--" + nums.length);
		// 返回结果是01304042
		// 题目中已说明“不需要考虑数组中超出新长度后面的元素”

	}

}
